home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / LANG / PROLOG / BP330 / !BinPro330 / progs / cbrev < prev    next >
Text File  |  1994-12-21  |  2KB  |  83 lines

  1. app(nil,Ys,Ys).
  2. app(A^Xs,Ys,A^Zs):-
  3.   app(Xs,Ys,Zs).
  4.  
  5. nrev(nil,nil).
  6. nrev(X^Xs,R):-
  7.   nrev(Xs,T),
  8.   app(T,X^nil,R).
  9.  
  10. full_range(It,L):- range(_,1,It),nrev(L,_), fail.
  11. full_range(_,_).
  12.  
  13. dummy(_,_).
  14.  
  15. empty_range(It,L):-range(_,1,It),dummy(L,_),fail.
  16. empty_range(_,_).
  17.  
  18. range(Min,Min,Max):-Min=<Max.
  19. range(I,Min,Max):-
  20.         Min<Max,
  21.         Min1 is Min+1,
  22.         range(I,Min1,Max).
  23.  
  24. integers(nil,I,I):-!.
  25. integers(I0^L,I0,I):-I0<I,I1 is I0+1,integers(L,I1,I).
  26.  
  27. bm(It,Len,Time,Lips):-
  28.     integers(L,0,Len),
  29.     timer(T0),
  30.     empty_range(It,L),
  31.     timer(T1),
  32.     full_range(It,L),
  33.     timer(T2),
  34.     Time is (T2-T1)-(T1-T0),
  35.     L1 is Len+1,
  36.     L2 is Len+2,
  37.     LI is (L1*L2)/2,
  38.     LIs is It*LI,
  39.     Lips is (LIs/Time)/1000.0.
  40.  
  41. htest(N,H,T,S):-
  42.         integers(Is,0,N),
  43.         statistics(global_stack,[H1,_]),
  44.         statistics(trail,[T1,_]),
  45.         statistics(local_stack,[S1,_]),
  46.         nrev(Is,_),
  47.         statistics(global_stack,[H2,_]),
  48.         statistics(trail,[T2,_]),
  49.         statistics(local_stack,[S2,_]),
  50.         H is H2-H1,T is T2-T1,S is S2-S1.
  51.  
  52. go(Mes,Len,It):-
  53.     bm(It,Len,T,L),
  54.         nl,write(Mes=[klips=L]),nl,
  55.     write([time=T,length=Len,iterations=It]),nl,
  56.     htest(Len,H,Tr,S),
  57.     nl,write(Mes=[heap=H,trail=Tr,stack=S]),nl.
  58.  
  59. gg:-go(50,100).
  60.  
  61. g0:-go(100,200).
  62.  
  63. g1:-go(100,800).
  64.  
  65. g2:-go(200,200).
  66.  
  67. g3:-write('use bp -h20000'),nl,go(2000,1).
  68.  
  69. go(L,I):-go(test,L,I).
  70.  
  71. go:-go('BMARK_brev:').
  72.  
  73. go(Mes):-
  74.     Len=300,
  75.     It=100,
  76.     go(Mes,Len,It).
  77.  
  78. timer(T):-statistics(runtime,[T0,_]),T is T0/1000.0.
  79. %timer(T):-statistics(cputime,T).
  80. %timer(T):-T is cputime.
  81.  
  82. p:-[brev].
  83.